using Umeng;

namespace FutureCorePlugin
{
    public static class UmengSDK
    {
        #region Init
        private const string AppKey = "5b8f3c35a40fa374c900029b";

        public static void Init()
        {
            InitSDK();
            InitSDKLater();

            DebugUtil.Log("[UMengSDK]Init Done");
        }

        private static void InitSDK()
        {
            //设置Appkey
            GA.StartWithAppKeyAndChannelId(AppKey, AppInfoConst.ChannelName);
        }

        private static void InitSDKLater()
        {
            //调试时开启日志 发布时设置为false
            GA.SetLogEnabled(false);
            //设置是否对日志信息进行加密
            GA.SetLogEncryptEnabled(false);
        }
        #endregion Init

        #region Public
        /// <summary>
        /// 开启玩家账号统计
        /// 当玩家账号登录时
        /// </summary>
        public static void PlayerSignIn(string userId)
        {
            GA.ProfileSignIn(userId, AppInfoConst.ChannelName);
        }

        /// <summary>
        /// 结束该玩家账号统计
        /// 当退出登录时
        /// </summary>
        public static void PlayerSignOff()
        {
            GA.ProfileSignOff();
        }

        /// <summary>
        /// 玩家充值
        /// cash 真实币数量 >=0的数,最多只保存小数点后2位
        /// source 支付渠道 枚举类型, 目前1-20的来源已经被预定义，如果使用自定义来源请使用21-99之间的id。
        /// coin 虚拟币数量 大于0的整数, 最多只保存小数点后2位
        /// </summary>
        public static void PlayerPay(double cash, GA.PaySource source, double coin)
        {
            GA.Pay(cash, source, coin);
        }

        /// <summary>
        /// 玩家充值并购买道具
        /// cash 真实币数量 >=0的数,最多只保存小数点后2位
        /// source 支付渠道 枚举类型, 目前1-20的来源已经被预定义，如果使用自定义来源请使用21-99之间的id。
        /// coin 虚拟币数量 大于0的整数, 最多只保存小数点后2位
        /// item 道具ID 非空字符串
        /// amount 道具数量 大于0的整数
        /// price 道具单价 >=0
        /// </summary>
        public static void PlayerPayAndBuyItem(double cash, GA.PaySource source, string item, int amount, double price)
        {
            GA.Pay(cash, source, item, amount, price);
        }

        /// <summary>
        /// 玩家购买道具
        /// 玩家用虚拟币兑换一定数量、价值的道具
        /// item 道具ID	非空字符串
        /// amount 道具数量 大于0的整数
        /// price 道具单价 >=0
        /// </summary>
        public static void PlayerBuyItem(string item, int amount, double price)
        {
            GA.Buy(item, amount, price);
        }

        /// <summary>
        /// 玩家使用道具
        /// item 道具ID 非空字符串
        /// amount 道具数量 大于0的整数
        /// price 道具单价 >=0
        /// </summary>
        public static void PlayerUseItem(string item, int amount, double price)
        {
            GA.Use(item, amount, price);
        }

        /// <summary>
        /// 赠送玩家货币 (活动)
        /// </summary>
        public static void BonusPlayerCoin(double coin, GA.BonusSource source)
        {
            GA.Bonus(coin, source);
        }

        /// <summary>
        /// 赠送玩家物品 (活动)
        /// coin 虚拟币数量 大于0的整数, 最多只保存小数点后2位
        /// source 奖励渠道 枚举类型, 其中Source1预定义为“系统奖励”，Source2 ~Source10的定义需要在友盟后台设置
        /// item 道具ID 非空字符串
        /// amount 道具数量 大于0的整数
        /// price 道具单价 >=0
        /// </summary>
        public static void BonusPlayerItem(string item, int amount, double price, GA.BonusSource source)
        {
            GA.Bonus(item, amount, price, source);
        }

        /// <summary>
        /// 玩家等级改变
        /// </summary>
        public static void PlayerLvChange(int lv)
        {
            GA.SetUserLevel(lv);
        }

        /// <summary>
        /// 玩家进入关卡
        /// </summary>
        public static void PlayerStartLevel(string level)
        {
            GA.StartLevel(level);
        }

        /// <summary>
        /// 玩家通过关卡
        /// </summary>
        public static void PlayerFinishLevel(string level)
        {
            GA.FinishLevel(level);
        }

        /// <summary>
        /// 玩家未通过关卡
        /// </summary>
        public static void PlayerFailLevel(string level)
        {
            GA.FailLevel(level);
        }

        /// <summary>
        /// 玩家自定义事件
        /// </summary>
        public static void PlayerCustomEvent(string eventId)
        {
            GA.Event(eventId);
        }

        /// <summary>
        /// 玩家自定义信息事件
        /// </summary>
        public static void PlayerCustomInfoEvent(string eventId, string label)
        {
            GA.Event(eventId, label);
        }
        #endregion Public
    }
}